package org.example.controller;

import org.example.dao.ArticleDao;
import org.example.model.Article;
import org.example.model.User;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//文章控制器：添加文章，获取文章列表，获取文章详情
//所有都是ajax返回json
@RestController
public class ArticleController {
    @GetMapping("/blog/list")
    public Object blogList(@SessionAttribute(value = "user", required = false) User user,
                           HttpServletResponse resp){
        //没有登录，不允许访问：返回401状态码
        if(user == null){
            resp.setStatus(401);
            return null;
        }
        //登录，查询文章列表，并返回: 根据用户id查询多篇文章
        List<Article> articles = ArticleDao.queryBlogList(user.getId());
        return articles;
    }

    //获取文章详情：getParameter是获取queryString/表单格式/form-data的简单类型
    //方法参数Integer id，如果前端没传id，继续执行就会报空指针异常
    //解决：(1)@RequestParam表示必传字段（2）int
    @GetMapping("/blog/detail")
    public Object blogDetail(@RequestParam Integer id){
        //通过文章id查询文章信息
        Article a = ArticleDao.queryBlogDetail(id);
        return a;
    }

    //发布文章接口: 请求数据json转文章对象
    @PostMapping("/blog/add")
    public Object blogAdd(@RequestBody Article a,
                          @SessionAttribute(value = "user", required = false) User user,
                          HttpServletResponse resp){
        //没有登录，不允许访问：返回401状态码
        if(user == null){
            resp.setStatus(401);
            return null;
        }
        //登录，插入文章操作
        a.setUserId(user.getId());
        int n = ArticleDao.insert(a);
        Map<String, Object> map = new HashMap<>();
        map.put("ok", true);
        return map;
    }
}
